
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
        </head>
        <body>
            <section>
                <!-- &quot;      ____                       ______       &quot; -->
<!-- &quot;     &#x2F; __ ____ _____ ____      &#x2F;_  __&#x2F;____   &quot; -->
<!-- &quot;    &#x2F; &#x2F;_&#x2F; &#x2F; __ `&#x2F; __ `&#x2F; _ ______&#x2F; &#x2F; &#x2F; ___&#x2F;   &quot; -->
<!-- &quot;   &#x2F; ____&#x2F; &#x2F;_&#x2F; &#x2F; &#x2F;_&#x2F; &#x2F;  __&#x2F;_____&#x2F; &#x2F; &#x2F; &#x2F;       &quot; -->
<!-- &quot;  &#x2F;_&#x2F;    __,_&#x2F;__, &#x2F;___&#x2F;     &#x2F;_&#x2F; &#x2F;_&#x2F;        &quot; -->
<!-- &quot;              &#x2F;____&#x2F;                          &quot; -->
<!-- &quot;                                              &quot; -->
<br/><br/>
  <p>
    <span>iptables</span>
    <span>路由表处理</span>
    <span>iptables</span>
  </p>
<b>NAME</b>
    <section style="margin-left:8%;">
    <strong>iptables</strong>
    - This is generated by page-tr
<br/><br/>
    </section>
<b>SYNOPSIS</b>
    <section style="margin-left:8%;">
    iptables
<br/><br/>
    </section>
<b>4表</b>
    <section style="margin-left:8%;">
    <strong>filter</strong>
        <section style="margin-left:4%">
    一般的过滤功能
        </section>
    <strong>nat</strong>
        <section style="margin-left:4%">
<br/><br/>
        </section>
    <strong>mangle</strong>
        <section style="margin-left:4%">
<br/><br/>
        </section>
    <strong>raw</strong>
        <section style="margin-left:4%">
<br/><br/>
        </section>
<br/><br/>
    </section>
<b>5链</b>
    <section style="margin-left:8%;">
    <b>PREROUTING</b>
        <section style="margin-left:8%;">
        数据包进入路由表之前
        <br/></section>
    <b>INPUT</b>
        <section style="margin-left:8%;">
        进来的数据包应用此规则链中的策略
        <br/></section>
    <b>FORWARDING</b>
        <section style="margin-left:8%;">
        通过路由表后，目的地不为本机
        <br/></section>
    <b>OUTPUT</b>
        <section style="margin-left:8%;">
        由本机产生，向外转发
        <br/></section>
    <b>POSTROUTING</b>
        <section style="margin-left:8%;">
        发送到网卡接口之前。
<br/><br/>
<br/>        </section>
    </section>
<b>规则表</b>
    <section style="margin-left:8%;">
    <strong>FILTER</strong>
    - 用于设置包过滤
        <section style="margin-left:4%">
    INPUT FORWARD OUTPUT
        </section>
    <strong>NAT</strong>
    - 用于设置地址转换
        <section style="margin-left:4%">
    PREROUTING INPUT POSTROUTING OUTPUT
        </section>
    <strong>Mangle</strong>
    - 用于设置网络流量整形等应用
        <section style="margin-left:4%">
    PREROUTING POSTROUTING INPUT FORWARD
        </section>
<br/><br/>
    </section>
<b>操作符</b>
    <section style="margin-left:8%;">
    <strong>-A 添加规则</strong>
<br/><br/>
    <strong>-N 创建规则</strong>
<br/><br/>
    <strong>-I 插入</strong>
<br/><br/>
    <strong>-D 删除指定规则链的规则</strong>
<br/><br/>
    <strong>-R 替换</strong>
<br/><br/>
    <strong>-P 设置规则链缺省策略</strong>
<br/><br/>
    <strong>-p 协议</strong>
<br/><br/>
    <strong>-s, -d 源、目的地址</strong>
<br/><br/>
    <strong>--sport, --dport 源、目的端口</strong>
<br/><br/>
    <strong>-i -o 匹配进入、出去的流量</strong>
<br/><br/>
    <strong>-j 动作</strong>
<pre>
    ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK。

    ACCEPT 将数据包放行
    REJECT 拦阻该数据包
    DROP 丢弃包不予处理
    REDIRECT 将包重新导向到另一个端口
        e.g: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
    MASQUERADE 改写数据包来
    LOG 将封包相关讯息纪录在 &#x2F;var&#x2F;log 中
    SNAT 改写封包来源 IP 为某特定 IP 或 IP 范围
        e.g: iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
    DNAT 改写封包目的地 IP 为某特定 IP 或 IP 范围
        e.g: iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100
    MIRROR 镜像数据包
    QUEUE 中断过滤程序
    RETURN 结束在目前规则链中的过滤程序
    MARK 将数据包标上某个代号
        e.g: iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
</pre>
<br/><br/>
    <strong>-X 删除自定义的链</strong>
<br/><br/>
    <strong>-t 指定规则表名称</strong>
<br/><br/>
    <strong>-F 清空</strong>
<br/><br/>
    <strong>查看</strong>
        <section style="margin-left:4%">
    -v 显示详细信息
    -n 显示端口、IP等
    -L 查看
    -line 进程号
        </section>
<br/><br/>
    </section>
<b>为无线添加路由规则</b>
    <section style="margin-left:8%;">
<pre>
    iptables -F 
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -A POSTROUTING -s 192.168.1.0&#x2F;24 -o eth0 -j MASQUERADE
    iptables -A FORWARD -s 192.168.1.0&#x2F;24 -o eth0 -j ACCEPT
    iptables -A FORWARD -d 192.168.1.0&#x2F;24 -m conntrak --ctstate ESTABLISHED,RELATED -i eth0 -j ACCEPT
</pre>
<br/><br/>
<br/><br/>
<pre>
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination         
    MASQUERADE  all  --  anywhere             anywhere            
    MASQUERADE  all  --  anywhere             anywhere   

    Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target     prot opt in     out     source               destination         
    1070 95300 MASQUERADE  all  --  any    enp2s0  anywhere             anywhere            
       9   509 MASQUERADE  all  --  any    any     anywhere             anywhere  
</pre>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
    </section>
<b>iptables 数据走向流程</b>
    <section style="margin-left:8%;">
<br/><br/>
    <b>表-链 对应</b>
        <section style="margin-left:8%;">
        <strong>PREROUTING</strong>
            <section style="margin-left:4%">
        规则可以存在于：raw表，mangle表，nat表。
            </section>
        <strong>INPUT</strong>
            <section style="margin-left:4%">
        规则可以存在于：mangle表，filter表，（centos7中还有nat表，centos6中没有）。
            </section>
        <strong>FORWARD</strong>
            <section style="margin-left:4%">
        规则可以存在于：mangle表，filter表。
            </section>
        <strong>OUTPUT</strong>
            <section style="margin-left:4%">
        规则可以存在于：raw表mangle表，nat表，filter表。
            </section>
        <strong>POSTROUTING</strong>
            <section style="margin-left:4%">
        规则可以存在于：mangle表，nat表。
            </section>
            <section style="margin-left:4%">
        当一个数据包进入网卡时，数据包首先进入PREROUTING链，在PREROUTING链中我们有机会修改数据包的DestIP(目的IP)，然后内核的”路由模块”根据”数据包目的IP”以及”内核中的路由表”判断是否需要转送出去(注意，这个时候数据包的DestIP有可能已经被我们修改过了)。
<br/><br/>
        如果数据包就是进入本机的(即数据包的目的IP是本机的网口IP)，数据包就会沿着图向下移动，到达INPUT链。数据包到达INPUT链后，任何进程都会收到它。
<br/><br/>
        本机上运行的程序也可以发送数据包，这些数据包经过OUTPUT链，然后到达POSTROTING链输出(注意，这个时候数据包的SrcIP有可能已经被我们修改过了)。
<br/><br/>
        如果数据包是要转发出去的(即目的IP地址不再当前子网中)，且内核允许转发，数据包就会向右移动，经过FORWARD链，然后到达POSTROUTING链输出(选择对应子网的网口发送出去)。
            </section>
<br/><br/>
        </section>
    </section>
</section>

            </section>
            <style>
                p:first-of-type{
                    margin-bottom: 15px;
                    text-align: center;
                }
                p:first-of-type span:first-child {
                    float: left;
                }
                p:first-of-type span:last-child  {
                    float: right;
                }
            </style>
        </body>
        </html>
        